package com.starry.core.web.core.logger.annotation;


import com.starry.core.web.core.logger.enums.OperateTypeEnum;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/**
 * 访问日志注解
 *
 * @author xiaoke
 */
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface OperationLog {

    /**
     * 标题
     */
    String title() default "";

    /**
     * 操作分类
     * 实际并不是数组，因为枚举不能设置 null 作为默认值
     */
    OperateTypeEnum operateType() default OperateTypeEnum.OTHER;

    /**
     * 是否记录访问日志
     */
    boolean enable() default true;

    /**
     * 是否记录请求参数
     */
    boolean requestEnable() default true;

    /**
     * 是否记录请求头
     */
    boolean requestHeaderEnable() default true;

    /**
     * 是否记录响应结果
     */
    boolean responseEnable() default false;

    /**
     * 敏感参数数组
     */
    String[] sanitizeKeys() default {};

}
